<!DOCTYPE html>
<html lang="en">
<head>
<title>cef4delphi: uCEFInterfaces: Interface ICefLifeSpanHandler</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="PasDoc 0.16.0-snapshot">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
</head>
<body>
<span id="ICefLifeSpanHandler"></span><h1 class="cio">Interface ICefLifeSpanHandler</h1>
<div class="sections">
<div class="one_section"><a class="section" href="#PasDoc-Description">Description</a></div><div class="one_section"><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></div><div class="one_section">Fields</div><div class="one_section"><a class="section" href="#PasDoc-Methods">Methods</a></div><div class="one_section">Properties</div></div>
<span id="PasDoc-Description"></span><h2 class="unit">Unit</h2>
<p class="unitlink">
<a href="uCEFInterfaces.html">uCEFInterfaces</a></p>
<h2 class="declaration">Declaration</h2>
<p class="declaration">
<code>type ICefLifeSpanHandler = interface(<a class="normal" href="uCEFInterfaces.ICefBaseRefCounted.html">ICefBaseRefCounted</a>)</code></p>
<h2 class="description">Description</h2>
<p>
 Implement this interface to handle events related to browser life span. The functions of this interface will be called on the UI thread unless otherwise indicated. </p>
<p>


<p>UNKNOWN

<p>&lt;see href=&quot;<a href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_life_span_handler_capi.h">https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_life_span_handler_capi.h</a>&quot;&gt;CEF source file: /include/capi/cef_life_span_handler_capi.h (cef_life_span_handler_t))</p>
<span id="PasDoc-Hierarchy"></span><h2 class="hierarchy">Hierarchy</h2>
<ul class="hierarchy"><li class="ancestor">IInterface</li>
<li class="ancestor"><a class="normal" href="uCEFInterfaces.ICefBaseRefCounted.html">ICefBaseRefCounted</a></li>
<li class="thisitem">ICefLifeSpanHandler</li></ul><h2 class="overview">Overview</h2>
<span id="PasDoc-Methods"></span><h3 class="summary">Methods</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <strong><a href="uCEFInterfaces.ICefLifeSpanHandler.html#OnBeforePopup-ICefBrowser-ICefFrame-ustring-ustring-TCefWindowOpenDisposition-Boolean-TCefPopupFeatures-TCefWindowInfo-ICefClient-TCefBrowserSettings-ICefDictionaryValue-Boolean-">OnBeforePopup</a></strong>(const browser: <a href="uCEFInterfaces.ICefBrowser.html">ICefBrowser</a>; const frame: <a href="uCEFInterfaces.ICefFrame.html">ICefFrame</a>; const targetUrl, targetFrameName: <a href="uCEFTypes.html#ustring">ustring</a>; targetDisposition: <a href="uCEFTypes.html#TCefWindowOpenDisposition">TCefWindowOpenDisposition</a>; userGesture: Boolean; const popupFeatures: <a href="uCEFTypes.TCefPopupFeatures.html">TCefPopupFeatures</a>; var windowInfo: <a href="uCEFTypes.TCefWindowInfo.html">TCefWindowInfo</a>; var client: <a href="uCEFInterfaces.ICefClient.html">ICefClient</a>; var settings: <a href="uCEFTypes.TCefBrowserSettings.html">TCefBrowserSettings</a>; var extra_info: <a href="uCEFInterfaces.ICefDictionaryValue.html">ICefDictionaryValue</a>; var noJavascriptAccess: Boolean): Boolean;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <strong><a href="uCEFInterfaces.ICefLifeSpanHandler.html#OnBeforeDevToolsPopup-ICefBrowser-TCefWindowInfo-ICefClient-TCefBrowserSettings-ICefDictionaryValue-boolean-">OnBeforeDevToolsPopup</a></strong>(const browser: <a href="uCEFInterfaces.ICefBrowser.html">ICefBrowser</a>; var windowInfo: <a href="uCEFTypes.TCefWindowInfo.html">TCefWindowInfo</a>; var client: <a href="uCEFInterfaces.ICefClient.html">ICefClient</a>; var settings: <a href="uCEFTypes.TCefBrowserSettings.html">TCefBrowserSettings</a>; var extra_info: <a href="uCEFInterfaces.ICefDictionaryValue.html">ICefDictionaryValue</a>; var use_default_window: boolean);</code></td>
</tr>
<tr class="list">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <strong><a href="uCEFInterfaces.ICefLifeSpanHandler.html#OnAfterCreated-ICefBrowser-">OnAfterCreated</a></strong>(const browser: <a href="uCEFInterfaces.ICefBrowser.html">ICefBrowser</a>);</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <strong><a href="uCEFInterfaces.ICefLifeSpanHandler.html#DoClose-ICefBrowser-">DoClose</a></strong>(const browser: <a href="uCEFInterfaces.ICefBrowser.html">ICefBrowser</a>): Boolean;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <strong><a href="uCEFInterfaces.ICefLifeSpanHandler.html#OnBeforeClose-ICefBrowser-">OnBeforeClose</a></strong>(const browser: <a href="uCEFInterfaces.ICefBrowser.html">ICefBrowser</a>);</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <strong><a href="uCEFInterfaces.ICefLifeSpanHandler.html#RemoveReferences">RemoveReferences</a></strong>;</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Methods</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><span id="OnBeforePopup-ICefBrowser-ICefFrame-ustring-ustring-TCefWindowOpenDisposition-Boolean-TCefPopupFeatures-TCefWindowInfo-ICefClient-TCefBrowserSettings-ICefDictionaryValue-Boolean-"></span><code>function <strong>OnBeforePopup</strong>(const browser: <a href="uCEFInterfaces.ICefBrowser.html">ICefBrowser</a>; const frame: <a href="uCEFInterfaces.ICefFrame.html">ICefFrame</a>; const targetUrl, targetFrameName: <a href="uCEFTypes.html#ustring">ustring</a>; targetDisposition: <a href="uCEFTypes.html#TCefWindowOpenDisposition">TCefWindowOpenDisposition</a>; userGesture: Boolean; const popupFeatures: <a href="uCEFTypes.TCefPopupFeatures.html">TCefPopupFeatures</a>; var windowInfo: <a href="uCEFTypes.TCefWindowInfo.html">TCefWindowInfo</a>; var client: <a href="uCEFInterfaces.ICefClient.html">ICefClient</a>; var settings: <a href="uCEFTypes.TCefBrowserSettings.html">TCefBrowserSettings</a>; var extra_info: <a href="uCEFInterfaces.ICefDictionaryValue.html">ICefDictionaryValue</a>; var noJavascriptAccess: Boolean): Boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
 Called on the UI thread before a new popup browser is created. The |browser| and |frame| values represent the source of the popup request. The |target_url| and |target_frame_name| values indicate where the popup browser should navigate and may be NULL if not specified with the request. The |target_disposition| value indicates where the user intended to open the popup (e.g. current tab, new tab, etc). The |user_gesture| value will be true (1) if the popup was opened via explicit user gesture (e.g. clicking a link) or false (0) if the popup opened automatically (e.g. via the DomContentLoaded event). The |popupFeatures| structure contains additional information about the requested popup window. To allow creation of the popup browser optionally modify |windowInfo|, |client|, |settings| and |no_javascript_access| and return false (0). To cancel creation of the popup browser return true (1). The |client| and |settings| values will default to the source browser's values. If the |no_javascript_access| value is set to false (0) the new browser will not be scriptable and may not be hosted in the same renderer process as the source browser. Any modifications to |windowInfo| will be ignored if the parent browser is wrapped in a ICefBrowserView. Popup browser creation will be canceled if the parent browser is destroyed before the popup browser creation completes (indicated by a call to OnAfterCreated for the popup browser). The |extra_info| parameter provides an opportunity to specify extra information specific to the created popup browser that will be passed to ICefRenderProcessHandler.OnBrowserCreated in the render process. </p>
<h6 class="description_section">Attributes</h6>
<dl class="attributes">
  <dt>GUID['{0A3EB782-A319-4C35-9B46-09B2834D7169}']</dt>
  <dd></dd>
</dl>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><span id="OnBeforeDevToolsPopup-ICefBrowser-TCefWindowInfo-ICefClient-TCefBrowserSettings-ICefDictionaryValue-boolean-"></span><code>procedure <strong>OnBeforeDevToolsPopup</strong>(const browser: <a href="uCEFInterfaces.ICefBrowser.html">ICefBrowser</a>; var windowInfo: <a href="uCEFTypes.TCefWindowInfo.html">TCefWindowInfo</a>; var client: <a href="uCEFInterfaces.ICefClient.html">ICefClient</a>; var settings: <a href="uCEFTypes.TCefBrowserSettings.html">TCefBrowserSettings</a>; var extra_info: <a href="uCEFInterfaces.ICefDictionaryValue.html">ICefDictionaryValue</a>; var use_default_window: boolean);</code></td>
</tr>
<tr><td colspan="2">
<p>


<p>Called on the UI thread before a new DevTools popup browser is created. The |browser| value represents the source of the popup request. Optionally modify |windowInfo|, |client|, |settings| and |extra_info| values. The |client|, |settings| and |extra_info| values will default to the source browser's values. Any modifications to |windowInfo| will be ignored if the parent browser is Views-hosted (wrapped in a ICefBrowserView).

<p>The |extra_info| parameter provides an opportunity to specify extra information specific to the created popup browser that will be passed to ICefRenderProcessHandler.OnBrowserCreated() in the render process. The existing |extra_info| object, if any, will be read-only but may be replaced with a new object.

<p>Views-hosted source browsers will create Views-hosted DevTools popups unless |use_default_window| is set to to true (1). DevTools popups can be blocked by returning true (1) from ICefCommandHandler.OnChromeCommand for IDC_DEV_TOOLS. Only used with the Chrome runtime.

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><span id="OnAfterCreated-ICefBrowser-"></span><code>procedure <strong>OnAfterCreated</strong>(const browser: <a href="uCEFInterfaces.ICefBrowser.html">ICefBrowser</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
 Called after a new browser is created. It is now safe to begin performing actions with |browser|. ICefFrameHandler callbacks related to initial main frame creation will arrive before this callback. See ICefFrameHandler documentation for additional usage information. </p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><span id="DoClose-ICefBrowser-"></span><code>function <strong>DoClose</strong>(const browser: <a href="uCEFInterfaces.ICefBrowser.html">ICefBrowser</a>): Boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
 Called when a browser has received a request to close. This may result directly from a call to ICefBrowserHost.*CloseBrowser or indirectly if the browser is parented to a top-level window created by CEF and the user attempts to close that window (by clicking the 'X', for example). The DoClose function will be called after the JavaScript 'onunload' event has been fired.

<p>An application should handle top-level owner window close notifications by calling ICefBrowserHost.TryCloseBrowser or ICefBrowserHost.CloseBrowser(false) instead of allowing the window to close immediately (see the examples below). This gives CEF an opportunity to process the 'onbeforeunload' event and optionally cancel the close before DoClose is called.

<p>When windowed rendering is enabled CEF will internally create a window or view to host the browser. In that case returning false (0) from DoClose() will send the standard close notification to the browser's top-level owner window (e.g. WM_CLOSE on Windows, performClose: on OS X, &quot;delete_event&quot; on Linux or ICefWindowDelegate.CanClose callback from Views). If the browser's host window/view has already been destroyed (via view hierarchy tear-down, for example) then DoClose() will not be called for that browser since is no longer possible to cancel the close.

<p>When windowed rendering is disabled returning false (0) from DoClose() will cause the browser object to be destroyed immediately.

<p>If the browser's top-level owner window requires a non-standard close notification then send that notification from DoClose() and return true (1).

<p>The ICefLifeSpanHandler.OnBeforeClose function will be called after DoClose() (if DoClose() is called) and immediately before the browser object is destroyed. The application should only exit after OnBeforeClose() has been called for all existing browsers.

<p>The below examples describe what should happen during window close when the browser is parented to an application-provided top-level window.

<p>Example 1: Using ICefBrowserHost.TryCloseBrowser(). This is recommended for clients using standard close handling and windows created on the browser process UI thread. 1. User clicks the window close button which sends a close notification to the application's top-level window. 2. Application's top-level window receives the close notification and calls TryCloseBrowser() (which internally calls CloseBrowser(false)). TryCloseBrowser() returns false so the client cancels the window close. 3. JavaScript 'onbeforeunload' handler executes and shows the close confirmation dialog (which can be overridden via ICefJSDialogHandler.OnBeforeUnloadDialog()). 4. User approves the close. 5. JavaScript 'onunload' handler executes. 6. CEF sends a close notification to the application's top-level window (because DoClose() returned false by default). 7. Application's top-level window receives the close notification and calls TryCloseBrowser(). TryCloseBrowser() returns true so the client allows the window close. 8. Application's top-level window is destroyed. 9. Application's OnBeforeClose() handler is called and the browser object is destroyed. 10. Application exits by calling cef_quit_message_loop() if no other browsers exist.

<p>Example 2: Using ICefBrowserHost::CloseBrowser(false) and implementing the DoClose() callback. This is recommended for clients using non-standard close handling or windows that were not created on the browser process UI thread. 1. User clicks the window close button which sends a close notification to the application's top-level window. 2. Application's top-level window receives the close notification and: A. Calls ICefBrowserHost.CloseBrowser(false). B. Cancels the window close. 3. JavaScript 'onbeforeunload' handler executes and shows the close confirmation dialog (which can be overridden via ICefJSDialogHandler.OnBeforeUnloadDialog()). 4. User approves the close. 5. JavaScript 'onunload' handler executes. 6. Application's DoClose() handler is called. Application will: A. Set a flag to indicate that the next close attempt will be allowed. B. Return false. 7. CEF sends an close notification to the application's top-level window. 8. Application's top-level window receives the close notification and allows the window to close based on the flag from #6B. 9. Application's top-level window is destroyed. 10. Application's OnBeforeClose() handler is called and the browser object is destroyed. 11. Application exits by calling cef_quit_message_loop() if no other browsers exist. </p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><span id="OnBeforeClose-ICefBrowser-"></span><code>procedure <strong>OnBeforeClose</strong>(const browser: <a href="uCEFInterfaces.ICefBrowser.html">ICefBrowser</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
 Called just before a browser is destroyed. Release all references to the browser object and do not attempt to execute any functions on the browser object (other than IsValid, GetIdentifier or IsSame) after this callback returns. ICefFrameHandler callbacks related to final main frame destruction will arrive after this callback and ICefBrowser.IsValid will return false (0) at that time. Any in-progress network requests associated with |browser| will be aborted when the browser is destroyed, and ICefResourceRequestHandler callbacks related to those requests may still arrive on the IO thread after this callback. See ICefFrameHandler and DoClose() documentation for additional usage information. </p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><span id="RemoveReferences"></span><code>procedure <strong>RemoveReferences</strong>;</code></td>
</tr>
<tr><td colspan="2">
<p>
 Custom procedure to clear all references. </p>
</td></tr>
</table>
<hr><span class="appinfo"><em>Generated by <a href="https://pasdoc.github.io/">PasDoc 0.16.0-snapshot</a>. </em>
</span>
</body></html>
